#!/usr/bin/env bash
#
# Used by the build system to check formatting, and fail the build if changed files in a pull request are unformatted.
# Takes a SHA argument, used to diff against in order to generate the list of files to inspect.
# Copyright 2015 Square, Inc

IFS=$'\n'

# The full path to the formatting scripts.
export CDPATH=""
DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
# The (assumed) relative path to the scripts from the repo.
# It would be better to search for this location, but it's made more difficult since this could be located as a sibling dependency for some repos.
RELATIVE_SCRIPTS_DIR="Pods/spacecommander"

source "$DIR"/lib/common-lib.sh

objc_files=$(objc_files_to_format "$1")
[ -z "$objc_files" ] && exit 0

function format_objc() {
	success=0
	for file in $objc_files; do
		difference=$("$DIR"/format-objc-file-dry-run.sh "$file" | diff -q "$file" - | wc -l)

		if [ $difference -gt 0 ]; then
			echo "$RELATIVE_SCRIPTS_DIR/format-objc-file.sh '$file' && git add '$file';"
			success=1
		fi
	done
	return $success
}

success=0
echo -e "\n#### Checking Objective-C Code Formatting ####\n"
format_objc || (echo -e "There were formatting issues with this commit, fix by running the above commands." && success=1)

if [ $success -eq 0 ]; then
	echo -e "\n#### Objective-C Code Formatting: APPROVED ####\n"
else
	echo -e "\nOr, fixup files and stage them by running:\n\t$RELATIVE_SCRIPTS_DIR/format-objc-files.sh -s $1"
	echo -e "\t(make sure you've installed the formatting checks first: $RELATIVE_SCRIPTS_DIR/setup-repo.sh )"
	echo -e "\n#### Objective-C Code Formatting: FAILED ####\n"
fi

exit $success
